Release 10.1A: OpenEdge Development:
Progress 4GL Reference
WRITE-XMLSCHEMA( ) method
Writes an XML representation of the schema for a ProDataSet, temp-table, or temp-table buffer object (that is, an XML Schema file). The XML Schema is written using the XML Schema Definition (XSD) language.
When writing schema for a ProDataSet object, Progress writes all table definitions as well as relation and index definitions. When writing schema for a temp-table or temp-table buffer object, Progress writes only table and index definitions.
Return type: LOGICAL Applies to: Buffer object handle, ProDataSet object handle, Temp-table object handle
target-typeA CHARACTER expression that specifies the target XML Schema document type. Valid values are: “FILE”, “STREAM”, “MEMPTR”, “HANDLE”, and “LONGCHAR”.
fileA CHARACTER expression that specifies the name of a file to which Progress writes the XML Schema document text. You can specify an absolute pathname or a relative pathname (based on the current working directory). If a file with the specified name already exists, Progress verifies that the file is writeable and overwrites the file.
streamA CHARACTER expression that specifies the name of a stream. If you specify the empty string (""), Progress writes the XML Schema document text to the default unnamed output stream. For WebSpeed, write the XML Schema document text to the WebSpeed-defined output stream (WEBSTREAM).
For more information about using Progress unnamed output streams, see the DEFINE STREAM statement reference entry in this book and the chapter on alternate I/O sources in OpenEdge Development: Programming Interfaces . For more information about using WebSpeed-defined output streams, see OpenEdge Application Server: Developing WebSpeed Applications .
memptrA MEMPTR variable to contain the XML Schema document text in memory. The method allocates the required amount of memory for the XML document text and sets the size of the variable. When you are finished using the MEMPTR, you must free the associated memory by executing SET-SIZE(
memptr) = 0 on the MEMPTR.handleAn X-document object handle or X-noderef object handle. If the specified handle contains XML text, Progress deletes the existing text first.
longcharA LONGCHAR variable to contain the XML Schema document text in memory.
Progress saves the XML Schema document text to the LONGCHAR variable in the code page that corresponds to the character encoding you specify in the
encodingoption. If you do not specify a character encoding for the XML Schema document text, Progress saves the LONGCHAR variable in UTF-8.If the LONGCHAR variable’s code page is fixed (that is, set using the FIX-CODEPAGE function) and the fixed code page is not equivalent to the character encoding you specify in the
encodingoption, the WRITE-XMLSCHEMA( ) method returns an error and the XML Schema document is not saved to the LONGCHAR.formattedAn optional LOGICAL expression where TRUE directs Progress to format the XML Schema document text in a hierarchical manner using extra white space, carriage returns, and line feeds. The default value is FALSE.
If you specify the Unknown value (
?), the method uses the default value of FALSE.encodingAn optional CHARACTER expression that specifies the name of the character encoding Progress uses to write the XML Schema document text. The default encoding is UTF-8.
The encoding name must be an Internet Assigned Numbers Authority (IANA) name supported by the Progress XML Parser. For a list of supported IANA encodings and their corresponding Progress code pages, see Table 64 in the ENCODING attribute reference entry in this book.
Note: Progress records this character encoding in the encoding declaration in the XML document’s prologue. If you specify the empty string ("") or the Unknown value (?), Progress uses the default encoding of UTF-8. In this case, Progress does not record the character encoding in the XML document’s encoding declaration.If
target-typeis HANDLE, the X-document’s ENCODING attribute is also set.min-xmlschemaAn optional LOGICAL expression where TRUE directs Progress to write the minimum amount of schema for the object, and FALSE directs Progress to write the complete schema including Progress-specific schema attributes. The default value is FALSE. If you specify the Unknown value (
?), the method uses the default value of FALSE.When TRUE, Progress-specific schema information (such as, field format, non-unique indexes, and so on) is omitted from the XML Schema. If the Progress data type of the temp-table field is not the default Progress data type for the XML Schema type, Progress writes the
Examplesprodata:dataTypeXML Schema attribute for the field. If the initial value of the temp-table field is TODAY, NOW, or UNKNOWN (and UNKNOWN is not the default initial value for the field’s data type), Progress writes theprodata:initialXML Schema attribute for the field.The following code example defines a static ProDataSet object and writes the ProDataSet object schema to an XML Schema file:
The following code example defines a static temp-table object, and writes the temp-table object schema to an XML Schema file:
Notes
- If the NAMESPACE-URI attribute value for a temp-table within a ProDataSet object is different than that of the ProDataSet object, the method creates a separate XML Schema file for the temp-table definition. The namespace URI for the temp-table is imported into the ProDataSet schema, with a
schemaLocationpointing to a separate XML Schema file containing the temp-table definition. Multiple namespaces are supported only whentarget-typeis “FILE”. If you specify multiple namespaces andtarget-typeis not “FILE”, the method generates an error and returns FALSE.- You can specify how a temp-table column is represented in XML Schema (that is, as an ELEMENT, ATTRIBUTE, or TEXT) by:
- When writing schema for a ProDataSet object that contains data-relations, you can nest child rows of a ProDataSet buffer within their parent rows in the resulting XML document by:
- If your temp-tables contain array fields, third party products utilizing the XML Schema might not map the Progress array field to an array column or object. For best interoperability with third party products, flatten array fields into individual fields.
- You cannot write an XML representation of the schema for a database buffer.
See also
ENCODING attribute, FIX-CODEPAGE function, NAMESPACE-PREFIX attribute, NAMESPACE-URI attribute, NESTED attribute, READ-XML( ) method, READ-XMLSCHEMA( ) method, WRITE-XML( ) method, XML-NODE-TYPE attribute
|
Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095 |